package delphorm.web.controller;



import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import delphorm.entite.personne.Utilisateur;
import delphorm.service.personne.IPersonne;


public class EditerGroupeUtilisateur extends SimpleFormController {
	private static final String[] ALLOWED_PROPERTIES ={
		"nom",
		"creerQuestionnaires",
		"voirTousQuestionnaires",
		"supprimerTousQuestionnaires",
		"modifierTousQuestionnaires",
		"creerToutesInstances",
		"voirToutesInstances",
		"validerToutesInstances",
		"supprimerToutesInstances",
		"modifierToutesInstances",
		"creerGroupe",
		"supprimerTousGroupes",
		"modifierTousGroupes",
		"ajouterUtilisateursTousGroupes",
		"supprimerUtilisateursTousGroupes",
		"supprimerTousUtilisateurs",
		"modifierTousUtilisateurs",
		"voirTousUtilisateurs",
		"voirSonQuestionnaire",
		"supprimerSonQuestionnaire",
		"modifierSonQuestionnaire",	
		"créerInstancesSonQuestionnaire",
		"voirSonInstanceSonQuestionnaire",
		"validerSonInstanceSonQuestionnaire",
		"supprimerSonInstanceSonQuestionnaire",
		"modifierSonInstanceSonQuestionnaire",
		"voirToutesInstancesSonQuestionnaire",
		"validerToutesInstancesSonQuestionnaire",
		"supprimerToutesInstancesSonQuestionnaire",
		"modifierToutesInstancesSonQuestionnaire"
	};
	protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
		super.initBinder(request, binder);
		binder.setAllowedFields(ALLOWED_PROPERTIES);
	}
	
	private IPersonne servicePersonne;
	private Utilisateur unutilisateur;
	
	protected Object formBackingObject(HttpServletRequest request)
	{
		//récupère le formulaire dans la session
		Object formulaire = request.getSession().getAttribute("formulaire");
		
		if(formulaire == null)
		{
//			récupère l'id de l'utilisateur
			String idutilisateur = request.getParameter("idutilisateur");
			long numero = Long.parseLong(idutilisateur);
			
			unutilisateur = getServicePersonne().chercherUtilisateurParId(new Long(numero));
			formulaire = unutilisateur;
			
		}
		return formulaire;
	}
	
	

	public IPersonne getServicePersonne() {
		return servicePersonne;
	}

	public void setServicePersonne(IPersonne servicePersonne) {
		this.servicePersonne = servicePersonne;
	}


	protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object formulaire, BindException exceptions) throws Exception {
		
		//effectuer l'enregistrement
		Utilisateur utilisateur = servicePersonne.editerUtilisateur((Utilisateur)formulaire);
    
		Map model = new HashMap();
		model.put("unutilisateur",utilisateur);
		return new ModelAndView(getSuccessView(),model);
	}



	protected Map referenceData(HttpServletRequest arg0, Object arg1, Errors arg2) throws Exception {
		Map map = new HashMap();
		map.put("unutilisateur",unutilisateur);
		return map;
	}

}
